asm
  ld sp,$E7FF
  end asm

#include "./library/smsrnd.bas"

dim eee as uinteger at $E010
dim seed as uinteger at $E012
dim ee2 as uinteger at $E014
dim ee3 as uinteger at $E016
dim ex0 as uinteger at $E018
dim ey0 as uinteger at $E01A
dim ej0 as uinteger at $E01C
dim ej1 as uinteger at $E01E

sub thelegendofkageputchar(txpos as uinteger,typos as uinteger,tchr as ubyte,tlayer as uinteger):
  poke $F400+((tlayer mod 3)*$400)+((txpos+(typos*32))bxor %1111111111) ,tchr
  end sub

sub thelegendofkagepalette(tid as uinteger,tvl as uinteger):
  poke uinteger $E800+(tid*2),tvl
  end sub

sub thelegendofkagescrolldeprecated(txpos as ubyte,typos as ubyte,tlayer as uinteger):
  poke $F0C0+(tlayer*2),txpos
  poke $F0C1+(tlayer*2),typos
  end sub

sub thelegendofkageputspritedeprecated(tlayer as uinteger,txpos as ubyte,typos as ubyte,tid as ubyte,tattr as ubyte):
  poke $F100+(tlayer*4),txpos
  poke $F101+(tlayer*4),typos
  poke $F102+(tlayer*4),tid
  poke $F103+(tlayer*4),tattr
  end sub

seed=0

thelegendofkagescrolldeprecated($17,$10,0)

for eee=$000 to $3FF
  thelegendofkagepalette(eee,(eee band $F)*$111)
  next

thelegendofkagepalette($112,$C84)
thelegendofkagepalette($110,$710)

for ee2=0 to 31
  for ee3=0 to 31
    thelegendofkageputchar(ee3,ee2,code("."),0)
    next:next

for ee2=0 to 15
  for ee3=0 to 15
    thelegendofkageputchar(ee3+12,ee2+10,ee3+(ee2*16),0)
    next:next

for ee2=$F100 to $F15F '- sprite - nothing happens?
  seed=smsrnd(seed)
  poke ee2,seed
  next

ex0=5:ey0=5
eee=0
do
  ej0=peek($F084) bxor $FF
  ej1=peek($F086) bxor $FF

  thelegendofkageputchar(8,25,48+(ej0 mod 10),0)
  thelegendofkageputchar(7,25,48+((int(ej0/10)) mod 10),0)
  thelegendofkageputchar(6,25,48+((int(ej0/100)) mod 10),0)

  thelegendofkageputchar(8,26,48+(ej1 mod 10),0)
  thelegendofkageputchar(7,26,48+((int(ej1/10)) mod 10),0)
  thelegendofkageputchar(6,26,48+((int(ej1/100)) mod 10),0)

  ex0=ex0-((ej0 band 4)/4)+((ej0 band 8)/8)
  ey0=ey0+((ej0 band 16)/16)-((ej0 band 32)/32)


  thelegendofkageputchar(ex0 band 31,ey0 band 31,eee,0)

  for ee2=1 to 1000:next
  eee=eee+1
  loop

do:loop

'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------

'- AM_RANGE(0xf400, 0xffff) AM_RAM_WRITE(lkage_videoram_w) AM_SHARE("videoram")
'- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_le_w) AM_SHARE("paletteram")
'- AM_RANGE(0xf100, 0xf15f) AM_RAM AM_SHARE("spriteram")
'- AM_RANGE(0xf0c0, 0xf0c5) AM_RAM AM_SHARE("scroll")

'- AM_RANGE(0xf084, 0xf084) AM_READ_PORT("P1")
'- AM_RANGE(0xf086, 0xf086) AM_READ_PORT("P2")

'- AM_RANGE(0x0000, 0xdfff) AM_ROM
'- AM_RANGE(0xe000, 0xe7ff) AM_RAM /* work ram */
'- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_le_w) AM_SHARE("paletteram")
'- AM_RANGE(0xf000, 0xf003) AM_RAM AM_SHARE("vreg") /* video registers */
'- AM_RANGE(0xf060, 0xf060) AM_WRITE(lkage_sound_command_w)
'- AM_RANGE(0xf061, 0xf061) AM_WRITENOP AM_READ(sound_status_r)
'- AM_RANGE(0xf062, 0xf062) AM_READWRITE(lkage_mcu_r,lkage_mcu_w)
'- AM_RANGE(0xf063, 0xf063) AM_WRITENOP /* pulsed; nmi on sound cpu? */
'- AM_RANGE(0xf080, 0xf080) AM_READ_PORT("DSW1")
'- AM_RANGE(0xf081, 0xf081) AM_READ_PORT("DSW2")
'- AM_RANGE(0xf082, 0xf082) AM_READ_PORT("DSW3")
'- AM_RANGE(0xf083, 0xf083) AM_READ_PORT("SYSTEM")
'- AM_RANGE(0xf084, 0xf084) AM_READ_PORT("P1")
'- AM_RANGE(0xf086, 0xf086) AM_READ_PORT("P2")
'- AM_RANGE(0xf087, 0xf087) AM_READ(lkage_mcu_status_r)
'- AM_RANGE(0xf0a0, 0xf0a3) AM_RAM /* unknown */
'- AM_RANGE(0xf0c0, 0xf0c5) AM_RAM AM_SHARE("scroll")
'- AM_RANGE(0xf0e1, 0xf0e1) AM_WRITENOP /* pulsed */
'- AM_RANGE(0xf100, 0xf15f) AM_RAM AM_SHARE("spriteram")
'- AM_RANGE(0xf160, 0xf1ff) AM_RAM /* unknown - no valid sprite data */
'- AM_RANGE(0xf400, 0xffff) AM_RAM_WRITE(lkage_videoram_w) AM_SHARE("videoram")

'-------------------------------------------------------------------------------

for eee=$E800 to $EFFF step 2 '- palette
  'seed=smsrnd(seed)
  'poke uinteger eee,seed
  poke uinteger eee,eee
  next

poke uinteger $E800,$C84
poke uinteger $E802,$F00
poke uinteger $E808,$0F0
poke uinteger $E810,$00F
poke uinteger $E818,$00F
poke uinteger $E820,$00F
poke uinteger $E828,$00F
poke uinteger $E840,$00F
poke uinteger $E880,$00F
poke uinteger $E900,$00F
poke uinteger $EA00,$00F
poke uinteger $EB00,$00F
poke uinteger $EC00,$00F
poke uinteger $ED00,$00F
poke uinteger $EE00,$00F
poke uinteger $EF00,$00F

for eee=$000 to $3FF
  poke uinteger $E800+(eee*2),(eee band $F)*$111
  next

for eee=$0 to $F
  poke uinteger $E820+(eee*2),(eee band $F)*$110
  next

for eee=$0 to $F
  poke uinteger $E840+(eee*2),(eee band $F)*$101
  next

for eee=$0 to $F
  poke uinteger $E860+(eee*2),(eee band $F)*$011
  next

for eee=$100 to $10F
  poke uinteger $E800+(eee*2),(eee band $F)*$100
  next

for eee=$110 to $11F
  poke uinteger $E800+(eee*2),(eee band $F)*$001
  next

for eee=$120 to $1FF
  poke uinteger $E800+(eee*2),(eee band $F)*$010
  next

poke uinteger $E800+($112*2),$C84
poke uinteger $E800+($110*2),$173



'scroll
poke $F0C0,$17 'x?
poke $F0C1,$10 'y?
poke $F0C2,0
poke $F0C3,0
poke $F0C4,0
poke $F0C5,0

  '- tmap 2/2 $F400 to $F7FF
  for eee=$F400 to $F7FF
    for ee2=1 to 200:next
    'seed=smsrnd(seed)
    poke eee bxor $3FF,eee band $7F
    'poke eee bxor $3FF,eee band $F
    next

  '- tmap 1/2 $F800 to $FBFF
  for eee=$F800 to $FBFF
    for ee2=1 to 2000:next
    seed=smsrnd(seed)
    poke eee,seed
    next

  '- tmap 0/2 $FC00 to $FFFF ?????
  for eee=$FC00 to $FFFF
    for ee2=1 to 2000:next
    seed=smsrnd(seed)
    poke eee,seed
    next

do

  '- tmap 2/2 $F400 to $F7FF
  for eee=$F400 to $F7FF
    for ee2=1 to 2000:next
    seed=smsrnd(seed)
    poke eee bxor $3FF,seed
    next

  '- tmap 1/2 $F800 to $FBFF
  for eee=$F800 to $FBFF
    for ee2=1 to 10:next
    seed=smsrnd(seed)
    poke eee,seed
    next

  '- tmap 0/2 $FC00 to $FFFF
  for eee=$FC00 to $FFFF
    for ee2=1 to 10:next
    seed=smsrnd(seed)
    poke eee,seed
    next

  '- sprites?
  for eee=$F100 to $F15F
    for ee2=1 to 2:next
    seed=smsrnd(seed)
    poke eee,seed
    next

  '- attributes?
  for eee=$F160 to $F3FFF
    for ee2=1 to 2:next
    seed=smsrnd(seed)
    poke eee,seed
    next



  loop



'-------------------------------------------------------------------------------
'dim ee2 as uinteger at $4C06
'dim ee3 as uinteger at $4C08
'dim ee4 as ubyte at $4C0A
'dim ecsp as ubyte at $4C0C
'dim ecsq as ubyte at $4C0E
'


'dim ex1 as uinteger at $4C14
'dim ey1 as uinteger at $4C16
'dim ex2 as uinteger at $4C18
'dim ey2 as uinteger at $4C1A
'dim ex3 as uinteger at $4C1C
'dim ey3 as uinteger at $4C1E
'
'dim ex4 as uinteger at $4C20
'dim ey4 as uinteger at $4C22
'dim ex5 as uinteger at $4C24
'dim ey5 as uinteger at $4C26
'dim ex6 as uinteger at $4C28
'dim ey6 as uinteger at $4C2A
'dim ex7 as uinteger at $4C2C
'dim ey7 as uinteger at $4C2E
'
'
'function test1(t1 as uinteger,t2 as uinteger,t3 as uinteger,t4 as uinteger)  as uinteger
'  end function
'
'sub zpoke(t1 as uinteger,t2 as ubyte)
'  poke t1,t2
'  end sub
'
'sub putchar(tx1 as uinteger, ty1 as uinteger, tch1 as uinteger)
'  poke ($4000+(tx1*32)+ty1) bxor %0000001111100000,(tch1 band 255)
'  end sub
'
'pacmanputsprite(0,21,10,4,3)
'pacmanputsprite(1,21,30,4,3)
'pacmanputsprite(2,21,50,4,3)
'pacmanputsprite(3,21,70,4,3)
'pacmanputsprite(4,21,90,4,3)
'pacmanputsprite(5,21,110,4,3)
'pacmanputsprite(6,21,130,4,3)
'pacmanputsprite(7,21,150,4,3)
'
'seed=0
'
'poke $4300,code("*")
'poke $4200,code("*")
'poke $4100,code("*")
'
'poke $4010,code("0")
'poke $400F,code("1")
'poke $4030,code("2")
'poke $402F,code("3")
'
'poke $43D0,code("0")
'poke $43CF,code("1")
'poke $43F0,code("2")
'poke $43EF,code("3")
'
'for ee2=0 to 11
'  poke ($4000+((ee2+12)*32)+13) bxor %0000001111100000,peek(@text01+ee2)
'  next
'
'for ee2=0 to 11
'  poke ($4000+(0*32)+(ee2+12)) bxor %0000000000011111,peek(@text01+ee2)+64
'  next
'
'for ee2=0 to 11
'  poke ($4000+(31*32)+(ee2+12)) bxor %0000000000011111,peek(@text01+ee2)+128
'  next
'
'ee4=0
'for ee3=15 to 15+15
'  for ee2=12 to 12+15
'    poke ($4000+(ee2*32)+ee3) bxor %0000001111100000,ee4
'    ee4=ee4+1
'    next
'    next
'
'for ee2=22 to 25
'  for ee3=6 to 9
'    poke ($4000+(ee2*32)+ee3) bxor %0000001111100000,code("X")
'    next
'    next
'
'test1(377,2445,63888,2342)
'
'eee=$4207
'i=code("Q")
'poke eee,i
'eee=eee+1
'i=code("T")
'poke eee,i
'
'seed=0
'for eee=$4400 to $47FF
'  seed=smsrnd(seed)
'  poke eee,seed
'  next
'
'ex0=20:ey0=10
'ex1=20:ey1=30
'ex2=20:ey2=50
'ex3=20:ey3=70
'ex4=20:ey4=90
'ex5=20:ey5=110
'ex6=20:ey6=130
'ex7=20:ey7=150
'eee=0
'ecsp=0:ecsq=0
'
'do
'poke $50C0,255 '- watchdog? - it seems to work! thanks, Jim Bagley!!!!
'
'ej0=peek($5000) bxor $ff
'ej1=peek($5040) bxor $ff
'
'poke ($4000+(6*32)+20) bxor %0000001111100000,ej0
'poke ($4000+(7*32)+20) bxor %0000001111100000,ej1
'
'poke ($4000+(8*32)+22) bxor %0000001111100000,48+(ex0 mod 10)
'poke ($4000+(7*32)+22) bxor %0000001111100000,48+((int(ex0/10)) mod 10)
'poke ($4000+(6*32)+22) bxor %0000001111100000,48+((int(ex0/100)) mod 10)
'
'poke ($4000+(8*32)+23) bxor %0000001111100000,48+(ey0 mod 10)
'poke ($4000+(7*32)+23) bxor %0000001111100000,48+((int(ey0/10)) mod 10)
'poke ($4000+(6*32)+23) bxor %0000001111100000,48+((int(ey0/100)) mod 10)
'
'poke ($4000+(8*32)+24) bxor %0000001111100000,48+(eee mod 10)
'poke ($4000+(7*32)+24) bxor %0000001111100000,48+((int(eee/10)) mod 10)
'poke ($4000+(6*32)+24) bxor %0000001111100000,48+((int(eee/100)) mod 10)
'poke ($4000+(5*32)+24) bxor %0000001111100000,48+((int(eee/1000)) mod 10)
'poke ($4000+(4*32)+24) bxor %0000001111100000,48+((int(eee/10000)) mod 10)
'
'poke ($4000+(8*32)+25) bxor %0000001111100000,48+(ej0 mod 10)
'poke ($4000+(7*32)+25) bxor %0000001111100000,48+((int(ej0/10)) mod 10)
'poke ($4000+(6*32)+25) bxor %0000001111100000,48+((int(ej0/100)) mod 10)
'
'poke ($4000+(8*32)+26) bxor %0000001111100000,48+(ej1 mod 10)
'poke ($4000+(7*32)+26) bxor %0000001111100000,48+((int(ej1/10)) mod 10)
'poke ($4000+(6*32)+26) bxor %0000001111100000,48+((int(ej1/100)) mod 10)
'
'poke ($4000+(8*32)+27) bxor %0000001111100000,48+(ecsp mod 10)
'
'
'if ecsp=0 then:
'  if (ej0 band 1)<>0 then: ey0=ey0-1:end if
'  if (ej0 band 2)<>0 then: ex0=ex0-1:end if
'  if (ej0 band 4)<>0 then: ex0=ex0+1:end if
'  if (ej0 band 8)<>0 then: ey0=ey0+1:end if
'  end if
'
'if ecsp=1 then:
'  if (ej0 band 1)<>0 then: ey1=ey1-1:end if
'  if (ej0 band 2)<>0 then: ex1=ex1-1:end if
'  if (ej0 band 4)<>0 then: ex1=ex1+1:end if
'  if (ej0 band 8)<>0 then: ey1=ey1+1:end if
'  end if
'
'if ecsp=2 then:
'  if (ej0 band 1)<>0 then: ey2=ey2-1:end if
'  if (ej0 band 2)<>0 then: ex2=ex2-1:end if
'  if (ej0 band 4)<>0 then: ex2=ex2+1:end if
'  if (ej0 band 8)<>0 then: ey2=ey2+1:end if
'  end if
'
'if ecsp=3 then:
'  if (ej0 band 1)<>0 then: ey3=ey3-1:end if
'  if (ej0 band 2)<>0 then: ex3=ex3-1:end if
'  if (ej0 band 4)<>0 then: ex3=ex3+1:end if
'  if (ej0 band 8)<>0 then: ey3=ey3+1:end if
'  end if
'
'if ecsp=4 then:
'  if (ej0 band 1)<>0 then: ey4=ey4-1:end if
'  if (ej0 band 2)<>0 then: ex4=ex4-1:end if
'  if (ej0 band 4)<>0 then: ex4=ex4+1:end if
'  if (ej0 band 8)<>0 then: ey4=ey4+1:end if
'  end if
'
'if ecsp=5 then:
'  if (ej0 band 1)<>0 then: ey5=ey5-1:end if
'  if (ej0 band 2)<>0 then: ex5=ex5-1:end if
'  if (ej0 band 4)<>0 then: ex5=ex5+1:end if
'  if (ej0 band 8)<>0 then: ey5=ey5+1:end if
'  end if
'
'if ecsp=6 then:
'  if (ej0 band 1)<>0 then: ey6=ey6-1:end if
'  if (ej0 band 2)<>0 then: ex6=ex6-1:end if
'  if (ej0 band 4)<>0 then: ex6=ex6+1:end if
'  if (ej0 band 8)<>0 then: ey6=ey6+1:end if
'  end if
'
'if ecsp=7 then:
'  if (ej0 band 1)<>0 then: ey7=ey7-1:end if
'  if (ej0 band 2)<>0 then: ex7=ex7-1:end if
'  if (ej0 band 4)<>0 then: ex7=ex7+1:end if
'  if (ej0 band 8)<>0 then: ey7=ey7+1:end if
'  end if
'
'if (ej1 band 15)<>0 then: ecsq=ecsq+1:end if
'ecsp=(int(ecsq/4))mod 8
'
'ee3=int(eee/4)
'
'pacmanputsprite(0,ex0,ey0,4,3)  '- layer,x,y,id,clut
'pacmanputsprite(1,ex1,ey1,ee3,3)  '- layer,x,y,id,clut
'pacmanputsprite(2,ex2,ey2,4,ee3)  '- layer,x,y,id,clut
'pacmanputsprite(3,ex3,ey3,ee3,ee3)  '- layer,x,y,id,clut
'pacmanputsprite(4,ex4,ey4,4,3)  '- layer,x,y,id,clut
'pacmanputsprite(5,ex5,ey5,ee3,3)  '- layer,x,y,id,clut
'pacmanputsprite(6,ex6,ey6,4,ee3)  '- layer,x,y,id,clut
'pacmanputsprite(7,ex7,ey7,ee3,ee3)  '- layer,x,y,id,clut
'
'eee=eee+1
'loop
'
''-------------------------------------------------------------------------------
'
'do
'loop
'
''-------------------------------------------------------------------------------
'
'text01:
'asm
'  defb "HELLO WORLD!!!!!"
'  end asm
'
''-------------------------------------------------------------------------------
'
'poke $5000,255
'
''- this should put some characters on the pattern display area
'for i=0 to 255
'  poke $4040+i,i
'  poke $4440+i,i
'  next
'
'do
'loop
'
''-------------------------------------------------------------------------------
'
'
'
